﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using UnwiseSourceService.Models;
using UnwiseSourceService.ToolClasses;
using UnwiseSourceService.ToolClasses.AdminClasses;

namespace UnwiseSourceService
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        Quotes ReadAQuote(string accessKey, int quote);

        [OperationContract]
        List<v_Courses> GetCourses(string accessKey, string language);

        [OperationContract]
        bool CreateCourse(string accessKey, Courses course);

        [OperationContract]
        List<v_Lectures> GetLectures(string accessKey, string language);

        [OperationContract]
        LecturesAndHeader GetLecturesOfCourse(string accessKey, string language, int courseId);

        [OperationContract]
        UserCredibility LogIn(string accessKey, Users user);

        [OperationContract]
        List<AdminCourse> GetAdminCourses(string accessKey, string language);

        [OperationContract]
        bool DeleteCourse(string accessKey, int courseId);

        [OperationContract]
        FullCourse GetFullCourse(string accessKey, int courseId);

        [OperationContract]
        List<UserShort> GetUsers(string accessKey);

        [OperationContract]
        List<Levels> GetCourseLevels(string accessKey);
    }

    // Use a data contract as illustrated in the sample below to add composite types to service operation
    //[DataContract]
    //public class Quote
    //{
    //    [DataMember]
    //    public string Author { get; set; }

    //    [DataMember]
    //    public string Content { get; set; }
    //}
}
